/**
 * 玩家类
 * 
 * @author 烦得很
 */
public class Player {
    //#region 所有私有字段
    private String name = "fdh";
    private int score = 0;
    private int level = 1;
    private int HP = 100;
    private static int[] playerPosition = new int[2]; // 玩家位置
    private String[][] objects = new String[10][2]; // 物品
    private int objectI = 0; // object的尾指针
    //#endregion

    //#region 所有公开字段
    public boolean isPlayerMove = false;
    public static moveDir nowMoveDir = moveDir.NONE;
    //#endregion

    // private boolean isRightMove(moveDir dir) {
    //     int playerX = playerPosition[0];
    //     int playerY = playerPosition[1];
    //     if (dir == moveDir.up) {
    //     }
    // }

    //#region 公开获取和修改字段的方法
    /**
     * 设置玩家位置
     * 
     * @param position 位置坐标
     */
    public static void setPosition(int[] position) {
        playerPosition = position.clone();
    }

    /**
     * 获取玩家位置信息
     * 
     * @return 玩家位置
     */
    public static int[] getPosition() {
        return playerPosition.clone();
    }

    /**
     * 玩家的各个移动方向
     */
    public static enum moveDir {
        up, down, left, right, NONE
    }
    //#endregion

    //#region 移动 移动事件处理
    /**
     * 控制玩家移动
     * 
     * @param dir 移动方向
     */
    private void move(moveDir dir) {
        switch (dir) {
            case up:
                playerPosition[0] -= 1;
                isPlayerMove = true;
                break;
            case down:
                playerPosition[0] += 1;
                isPlayerMove = true;
                break;
            case left:
                playerPosition[1] -= 1;
                isPlayerMove = true;
                break;
            case right:
                playerPosition[1] += 1;
                isPlayerMove = true;
                break;
        }
    }
    //#endregion
    /**
     * 注册玩家扣血
     * 
     * @param damage 收到的伤害
     */
    public void registerHPDown(int damage) {
        HP -= damage;
        if (HP <= 0) {
            //TODO:玩家死亡游戏运行状态的更改
        }
    }
}
